package br.com.esporte.apresentacao.infra.template.entidade;

import org.apache.wicket.model.CompoundPropertyModel;

import br.com.esporte.apresentacao.infra.componente.menu.MenuEnum;
import br.com.esporte.apresentacao.infra.generic.Pagina;
import br.com.esporte.apresentacao.infra.template.PaginaTemplateGrupo;
import br.com.esporte.negocios.entidade.IEntidade;
import br.com.esporte.negocios.entidade.imp.Grupo;

/**
 * 
 * @author Milton Domingues
 *
 * @param <ENTIDADE>
 */
public abstract class PaginaEntidadeGrupo<ENTIDADE extends IEntidade, GRUPO extends Grupo> extends PaginaTemplateGrupo<GRUPO> implements IPaginaEntidade<ENTIDADE>{

	private ENTIDADE vo;

	public PaginaEntidadeGrupo(ENTIDADE entidade, GRUPO grupo, Pagina paginaRetorno, MenuEnum menuHome) {
		super(grupo, paginaRetorno, menuHome);
		this.setVo(entidade);
	}

	protected abstract void acaoSalvar();

	@Override
	public ENTIDADE getVo() {
		return this.vo;
	}

	protected boolean isUpdate(){
		return (this.vo.getId() != null);
	}

	@Override
	public void montarPagina() {
		super.montarPagina();
		this.getContainer().setDefaultModel(new CompoundPropertyModel<ENTIDADE>(this.vo));
	}

	@Override
	public void setVo(ENTIDADE vo) {
		this.vo = vo;
	}

}
